package mapper;

import DO.EncodeExampleDO;
import DTO.AddEncodeExampleDTO;
import DTO.UpdateEncodeExampleDTO;
import VO.EncodeExampleVO;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

@Mapper
public interface EncodeExampleMapper {
    @Select("select id, input, output, `explain` from encode_example where encode_id = #{id} and `order` = #{order} ")
    EncodeExampleVO getEncodeExampleByEncodeId(Integer id,Integer order);

    // 获取结果示例的数量
    @Select("select COUNT(*) from encode_example where encode_id = #{id}")
    Integer getEncodeExampleNumberByEncodeId(Integer id);

    @Update("update encode_example set input = #{input}, output = #{output}, `explain` = #{explain} where id = #{id}")
    void UpdateById(UpdateEncodeExampleDTO updateEncodeExampleDTO);

    @Delete("delete from encode_example where id = #{id}")
    void deleteById(Integer id);

    // 获取批量改题目的id按照order的顺序
    List<EncodeExampleDO> getEncodeExampleListByEncodeId(Integer encodeExampleId);

    // 重新设置序号
    void updateOrder(EncodeExampleDO encodeExampleDO);

    // 添加编程题示例
    void addEncodeExample(EncodeExampleDO encodeExampleDO);

    // 根据编程题id获取全部数据
    @Select("select * from encode_example where encode_id = #{encodeId} order by `order`")
    List<EncodeExampleDO> getAllByEncodeId(Integer encodeId);
}
